From d6ca80e03cc062c984401aefba5e277a9d9139a0 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Thu, 3 Apr 2014 17:54:34 +0100 Subject: [PATCH] Revert "Revert "xen/arm: Allocate memory for dom0 from the bottom with the 1:1 Workaround"" This reverts commit 1be5c1947fd52f5faaf6b678a829d47b0ec88bfd, effectively reinstating 6c21cb36e263de2db8716b477157a5b6cd531e1e. Without this booting dom0 on systems with >4GB of RAM is broken because the guest gets allocated a memory range which it cannot access. Signed-off-by: Ian Campbell --- xen/arch/arm/domain_build.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index a0b73d2a4d..502db84690 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -69,12 +69,19 @@ static void allocate_memory_11(struct domain *d, struct kernel_info *kinfo) { paddr_t start; paddr_t size; - struct page_info *pg; + struct page_info *pg = NULL; unsigned int order = get_order_from_bytes(dom0_mem); int res; paddr_t spfn; + unsigned int bits; + + for ( bits = PAGE_SHIFT + 1; bits < PADDR_BITS; bits++ ) + { + pg = alloc_domheap_pages(d, order, MEMF_bits(bits)); + if ( pg != NULL ) + break; + } - pg = alloc_domheap_pages(d, order, 0); if ( !pg ) panic("Failed to allocate contiguous memory for dom0"); -- 2.30.2